package com.tbit.uqbike.webmanager.dao.core;

import com.tbit.uqbike.object.pojo.UserBlackList;
import com.tbit.uqbike.object.pojo.dto.UpdateBlackListDTO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 用户黑名单dao
 *
 * @author Leon
 * 2017年2月24日 下午4:02:36
 */
public interface UserBlackListDao {
    /**
     * 添加
     *
     * @param userBlackList
     */
    void insert(UserBlackList userBlackList);

    /**
     * 添加
     *
     * @param userBlackList
     */
    void update(UserBlackList userBlackList);

    /**
     * 根据用户id查询
     *
     * @param userIds
     * @return
     */
    UserBlackList getByUserId(Integer userId);

    /**
     * 自定义字段查询
     *
     * @param blackList
     * @return .
     */
    UserBlackList selectBy(UserBlackList blackList);

    /**
     * 删除
     *
     * @param userId
     */
    void del(Map<String, Object> params);

    /**
     * 查询总数
     *
     * @param params
     * @return
     */
    Integer queryCount(Map<String, Object> params);

    /**
     * 分页查询
     *
     * @param params
     * @return
     */
    List<UserBlackList> queryPage(Map<String, Object> params);

    /**
     * 查询黑名单按区域显示
     *
     * @param params
     * @return
     */
    List<UserBlackList> pageByAdAccountId(Map<String, Object> params);

    /**
     * 查询黑名单按区域显示总数
     *
     * @param params
     * @return
     */
    Integer countByAdAccountId(Map<String, Object> params);

    /**
     * 清除失效黑名单
     */
    void delExpire();

    void updateIsSend(@Param("userId") Integer userId, @Param("isSend") Integer isSend);

    /**
     * 通过手机号查询
     *
     * @param phone
     */
    List<UserBlackList> getByPhone(String phone);

    /**
     * 通过身份证号查询
     *
     * @param idNo
     */
    List<UserBlackList> getByIdNo(String idNo);

    /**
     * 修改用户黑名单过期时间
     *
     * @param updateBlackListDTO
     */
    void updateUserBlackList(UpdateBlackListDTO updateBlackListDTO);

    /**
     * 通过userId、idNo或者phone查询
     */
    List<UserBlackList> getByUserIdOrIdNoOrPhone(@Param("userId") Integer userId, @Param("idNo") String idNo, @Param("phone") String phone);


    /**
     * 根据用户id修改黑名单
     *
     * @param userBlackList .
     */
    void updateEntityByUserId(UserBlackList userBlackList);
}